package com.itcast.springboot3x.http.client;

import com.itcast.springboot3x.http.domain.ToDoBean;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.service.annotation.GetExchange;
import org.springframework.web.service.annotation.HttpExchange;
import org.springframework.web.service.annotation.PostExchange;

import java.util.List;

/**
 * Spring WebMVC的用法是很类似的，不过它声明的是远程的资源
 *
 * 在线REST HTTP服务  https://jsonplaceholder.typicode.com
 * https://zhuanlan.zhihu.com/p/574269406
 */
/**
 * @HttpExchange：最通用的一个注解，在类级别将会被所有方法继承，如基础路径地址；
 * 在方法级别，需要指定具体的method类型。相当于@RequestMapping。
 */
@HttpExchange(value = "todos")
public interface ToDoBeanClient {
    /**
     * @GetExchange：HTTP GET请求。相当于@GetMapping
     * @PostExchange：HTTP POST请求。相当于@PostMapping
     * @PutExchange：HTTP PUT请求。相当于@PutMapping
     * @DeleteExchange：HTTP DELETE请求。相当于@DeleteMapping
     * @PatchExchange：HTTP PATCH请求。相当于@PatchMapping
     * @param id
     * @return
     */
    @GetExchange(value = "{id}")
    ToDoBean getTodoBean(@PathVariable Integer id) ;

    @GetExchange
    List<ToDoBean> getTodoBeans() ;

    @PostExchange
    ToDoBean saveTodoBean(@RequestBody ToDoBean toDoBean) ;
}
